package org.swift.mashup.engine.concurrency;

import java.util.Iterator;

public interface ConcurrentConfiguration {
	/**
	 * The context type the system should use when determining how to
	 * manufacture or execute jobs.
	 * @return the context type.  can be null.
	 */
	String getContextType();
	
	/**
	 * Gets a new compute node iterator
	 */
	Iterator<String> getComputeNodeIterator();
	
	/**
	 * Gets the number of available compute nodes.
	 */
	int computeNodeCount();
	
	/**
	 * The directory the concurrency context should use for temporary
	 * files.
	 * @return
	 */
	String getWorkingDirectory();
	
	/**
	 * This directory should contain files necessary for a concurrent
	 * context to operate.
	 * 		+ concurrent.properties
	 *  		Contains list of adresses for compute nodes that are available
	 *  		for running mashup jobs.
	 */
	String getSettingsDirectory();
	
	/**
	 * Number of times to attempt executing a job that is failing.
	 */
	int getMaxAttempts ();
	public boolean isDeleteFiles();
	public boolean isMappedFiles();
}